DigitalGarden 和 Vercel 使用注意事项
注意 Obsidian 本身的 Markdown 解析器十分强大,支持许多不严谨的格式,但是这些不严谨的部分并不被 DigitalGarden 用于部署的 Markdown 解析器支持,如
- 以行内代码块结尾的段落可以省略右 `
- 单行大公式 $$ $$ 可以置于行内
- 列表必须单独空一行那个才算结束
另外,在实际网页显示中: - 单 ` 的行内代码块内的 #define 如 `#define` 仍然会被识别为标签,但是双 `` 不会
- \#define 仍然会被识别为标签,比如我天真地写下的上一行,必须使用 #define,这是 HTML 实体,绕过了 Markdown 和 Obsidian 的解析
慎用 DigitalGarden 的 Publish Single Notes 功能,可能造成:
- 修改了 notes 文件名、路径时,其他文件的 backlinks 未更新,导致引用失效
Publish Multiple Notes 会自动检测所有之前发布的但是现在被删除(原路径失效)或者 dg-publish = false 的所有 notes 以及所有之前被引用但是现在没有被引用的图片并在新的发布中将它们删除;会自动检测所有之前未发布的但是现在 dg-publish = true 或者之前发布的现在存在更新的所有 notes 以及所有之前未引用但是现在被引用的图片并在新的发布中发布。
Vercel 的部署次数有每日 100 次上限,其部署次数并不等价于在 Digital Garden 中的发布次数
- Publish Multiple Notes 仅在存在改变时会上传 github,Publish Single Notes 任何情况下都会上传 github。
- 使用 Publish Single Notes 时算 1 次部署
- 使用 Publish Multiple Notes 时次数为 (删除文件数 + 1) 次,原理是 Digital Garden 删除文件时每一份文件都会 commit 一次。所以应当尽量减少删除文件、修改文件名、文件目录的次数。注意删除的文件数包括图片文件。
- 注意虽然存在多次的删除 commit 但是,并不是每次删除 commit 都会触发成功的 Vercel 构建,在一组删除中只有最后一次构建将会是成功的(会被显示在 Vercel Deployment 列表中),在此之前的 (删除文件数 - 1)次 commit 触发的构建都会被取消(但是仍然会计入每日部署次数限制)
- GitHub 的 commit 数就是当日已经部署的次数。
- 在触发每日限制后,新增的 commit 会被忽略(check fails),而且限制解除后并不会将这些被忽略的 commit 自动触发构建,这时需要进行手动将不同步的文件触发构建(因为 github 和 本地仓库是同步的,但是实际网页和 github 不同步)
已知 bug:
- 不支持路径(文件夹名 / 文件名)中含有 + 字符,所以不能在 notes 标题或文件夹名臣中写 C++。
经查明,原因为 URL (至少通过 Vercel 部署的网页 URL 如此)不支持在路径中直接出现部分特殊字符,必须经过编码。将 URL 中的所有 + 替换为 %2B 可以成功访问目标网页。notes 中的 obsidian backlink 在生成的网页文件中的链接地址并不会把 + 替换为 %2B,所以实际的网页生成是正常的,只是跳转的链接给的是错误的。值得注意的是,在网页生成过程中,链接中的空格会被替换为 %20,所以文件夹、文件名称中可以出现空格;中文字符在我的本地被 Google 浏览器支持(大概在浏览器底层自动进行了编码替换)。